import axios from "axios";
import { ElMessage } from "element-plus";
import router from "@/utils/router";
// import {Auth} from "@/store/auth";


const host =
    process.env.NODE_ENV === 'production' || process.env.VUE_APP_ENV === 'production'
        ? '/api'
        : 'http://localhost:8111';

// // 不需要拦截的路由路径
// // const whiteList = ['/login', '/register'];
// // 不需要token的接口
// // const noAuthUrls =['/login', '/register'];
// // 请求拦截器
// axios.interceptors.request.use(
//     (config) => {
//         if (config.url !== host+"/login") {
//             if (config.url !== host+"/register") {
//                 //如果存在token，请求携带token
//                 if (localStorage.getItem("Token")){
//                     config.headers["token"] = localStorage.getItem("Token");
//                     console.log("token", config.headers)
//                 }
//                 if (localStorage.getItem("Token")==null){
//                     Message.error({ message: "请先登录" });
//                     router.push("/login");
//                 }
//             }
//         }
//         return config;
//         // 判断当前请求接口是否需要token
//         // if (!noAuthUrls.includes(config.url)) {
//         //     const token = localStorage.getItem("Token");
//         //     if (token) {
//         //         config.headers["token"] = token;
//         //     } else {
//         //         // 判断当前路由是否在白名单中
//         //         const currentPath = router.currentRoute.path;
//         //         if (!whiteList.includes(currentPath)) {
//         //             Message.error("请先登录");
//         //             router.push("/login");
//         //             return Promise.reject(new Error('请先登录'));
//         //         }
//         //     }
//         // }
//         // return config;
//     },
//     (error) => {
//         Message.error({ message: error });
//         // 对请求错误做些什么
//         console.log("到达此处")
//         return Promise.reject(error);
//     }
//
// );
//
// 添加响应拦截器
axios.interceptors.response.use(
    function (response) {
        console.log(response)
        if (response.status && response.status === 200) {
            if (
                response.data.code === 500 ||
                response.data.code === 401 ||
                response.data.code === 403
            ) {
                //接口请求成功，业务逻辑错误
                ElMessage.error({ message: response.data.message });
                return response;
            }
            if (response.data.message ==="添加成功"||
                response.data.message === "修改成功" ||
                response.data.message === "删除成功"
            ){
                ElMessage.success({ message: response.data.message });
            }
        }
        return response;
    },
    function (error){
        console.log(Promise.reject(error))
        if (error.status === 401){
            ElMessage.error({ message: "请先登录" });
            router.push("/login");
        } else {
            ElMessage.error({ message: "服务异常" });
        }
        console.log(error)
        return Promise.reject(error);
    }
)




//post
export const postRequest = (url, params) => {
    const config = {
        method: "post",
        url: `${host}${url}`,
        data: params,
    };
    
    // 如果是FormData，不设置Content-Type，让浏览器自动设置
    if (params instanceof FormData) {
        // 不设置Content-Type，让浏览器自动设置multipart/form-data和boundary
        delete config.headers;
    } else {
        // 对于JSON数据，设置正确的Content-Type
        config.headers = {
            'Content-Type': 'application/json'
        };
    }
    
    return axios(config);
};

//put
export const putRequest = (url, params) => {
    const config = {
        method: "put",
        url: `${host}${url}`,
        data: params,
    };
    
    // 如果是FormData，不设置Content-Type，让浏览器自动设置
    if (params instanceof FormData) {
        // 不设置Content-Type，让浏览器自动设置multipart/form-data和boundary
        delete config.headers;
    }
    
    return axios(config);
};

//get
export const getRequest = (url, params) => {
    return axios({
        method: "get",
        url: `${host}${url}`,
        params: params,
    });
};

//del
export const deleteRequest = (url, params) => {
    return axios({
        method: "delete",
        url: `${host}${url}`,
        data: params,
    });
};
